<?php
namespace app\admin\validate;
use think\Validate;

/**
 * 创建节点菜单验证器
 */
class Menu extends Validate
{   
    protected $rule = [
        'title' => 'require|lenMax:30|unique:menu',
        'group' => 'require|lenMax:50',
        'url'   => 'require|lenMax:50',
    ];

    protected $message = [
        'title.require' => '菜单名称不能为空',
        'title.lenMax'  => '菜单名称长度不能大于30位',
        'title.unique'  => '菜单名称已经存在',
        'group.require' => '分组名称不能为空',
        'group.lenMax'  => '分组名称长度不能大于50位',
        'url.require'   => 'url不能为空',
        'url.lenMax'    => 'url长度不能大于50位',
    ];

    protected $scene = [
        'add'  => ['title', 'group', 'url'],
        'edit' => ['title', 'group', 'url'],
    ];

    /**
     * 长度自定义验证规则 最小
     * @param    string     $value 验证数据
     * @param    string     $rule  验证规则
     * @param    array      $data  全部数据（数组）
     * @return   string
     */
    protected function lenMin( $value, $rule, $data )
    {
        $len = mb_strlen( $value, 'utf-8' );
        return $len >= $rule ? true : false;
    }

    /**
     * 长度自定义验证规则 最大
     * @param    string     $value 验证数据
     * @param    string     $rule  验证规则
     * @param    array      $data  全部数据（数组）
     * @return   string
     */
    protected function lenMax( $value, $rule, $data )
    {
        $len = mb_strlen( $value, 'utf-8' );
        return $len <= $rule ? true : false;
    }

}
